package com.yugao.fintech.antelope.infra.file.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yugao.fintech.antelope.infra.file.modle.FileUpload;
import com.yugao.fintech.antelope.infra.file.modle.rqrs.FileRecordSaveResp;
import com.yugao.fintech.antelope.infra.module.file.model.entity.FileRecord;
import com.yugao.fintech.antelope.infra.module.file.model.rqrs.FileRecordPageReq;
import com.yugao.fintech.antelope.infra.module.file.model.rqrs.FileRecordResp;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 文件上传记录
 *

 */
public interface FileRecordService extends IService<FileRecord> {
    /**
     * 分页查询 文件上传记录
     *
     * @return 返回分页数据
     */
    IPage<FileRecordResp> pageFileRecord(FileRecordPageReq query);

    /**
     * 保存 文件上传记录
     *
     * @param req 新增的记录
     * @return 是否保存成功
     */
    boolean saveFileRecord(FileRecord req);

    /**
     * 通过id获取 文件上传记录
     *
     * @param id 主键
     * @return 是否删除成功
     */
    FileRecordResp getRecordById(Long id);

    /**
     * 通过文件上传的路径查找
     */
    FileRecordResp getRecordByPath(String path, boolean isIntranet);

    /**
     * 通过id删除 文件上传记录
     *
     * @param id 主键
     * @return 是否删除成功
     */
    boolean deleteRecordById(Long id) throws Exception;
    
    /**
     * 通过id删除 文件上传记录
     *
     * @param ids 主键集合
     * @return 是否删除成功
     */
    boolean deleteRecordByIds(List<Long> ids) throws Exception;

    /**
     * 返回的是存在在服务上的路径
     */
    FileRecordSaveResp genFileRecord(FileUpload fileUpload);

    void download(HttpServletResponse response, Long recordId) throws IOException;


    void deleteRecordByPath(String path);
}
